Внедрение микроразметки Schema.org в статьи сайта на Joomla 3

Как известно наличие микроразметки напрямую не влияет на ранжирование сайта в поисковых системах, однако её вклад пусть и косвенный все же прослеживается. Поэтому почему бы нам не воспользоваться всеми возможными способами для того чтобы получить шанс повысить позиции сайта. И начнем мы, пожалуй, с микроразметки.

Что такое микроразметка, и из каких наиболее популярных и распространенных словарей она состоит, мы говорили в предыдущей статье. На сей раз разговор пойдет исключительно о микроразметке Schema.org и о том, как её внедрить в материалы Joomla 3.

Большинство сайтов на Joomla 3 есть не что иное, как обычный блог который содержит материалы (статьи). Материалы могут быть выведены как отдельно, так и в виде блога категории. Соответственно структура микроразметки для каждой конкретной ситуации будет отличаться. В данной статье мы подробно разберем, как использовать микроразметку Schema.org для статей (материалов) Joomla 3.

Прежде чем начать вносить изменения в код шаблона статьи, давайте воспользуемся одним из сервисов для проверки микроразметки на сайте. Это может быть валидатор микроразметки от Яндекса или инструмент проверки структурированных данных от Google.

Я остановлю свой выбор на валидаторе от Гугла, просто потому что мне он кажется более удобным, а позднее перейдем и к Яндексу. Первым делом копируем адрес страницы, которую хотим проверить вставляем его в соответствующее поле валидатора и жмем кнопку «Запустить тест»:

Запускаем тест микроразметки от Гугла

После завершения теста система покажет наличие (или отсутствие) микроразметки, а так же обнаруженные в процессе ошибки. В моем случае Гугл обнаружил микроразметку для так называемой сущности BreadcrumbList (хлебные крошки) и Article (статья). И если с хлебными крошками проблем не оказалось, то в микроразметки статьи нашлось три ошибки и два предупреждения:

Валидатор микроразметки выявил 3 ошибки и 2 предупреждения

Прежде чем продолжить разбор ошибок хочу обратить Ваше внимание на то, что в Joomla 3 разработчиками изначально уже предусмотрено использование микроразметки Schema.org об этом свидетельствует вышеупомянутый скриншот. Однако в связи с периодическим внесением изменений и дополнений в словарь Schema.org рано или поздно будут возникать некоторые ошибки в семантической разметке страниц.

Не стоит бояться наличия ошибок в микроразметке, ведь их можно с легкостью исправить самостоятельно, было бы желание. Этим мы сейчас и займемся. Для начала давайте определимся, на какие именно ошибки указывает нам Гугл. В моем случае все оказалось достаточно банально, не указано значение для поля автор (author), дата публикации (datePublished), модификации (dateModified) и так далее:

Ошибки в микроразметке связаны с автором, датой создания и публикации материала и т.п.

Почему у меня появились подобные ошибки? Все просто, я специально не выводил эти данные, просто не люблю, когда у каждой статьи стоит одинаковое значение для поля автор. По поводу даты публикации и модификации, тут все еще проще, я выводил эти данные самостоятельно по средствам кода и забыл указать соответствующие атрибуты для разметки.

Ошибки в микроразметке обнаружены, отлично, теперь можно приступить к их исправлению. Первым делом я исправлю значения дат публикации и модификации материала. Для этого открываем файл /templates/имя_шаблона/html/com_content/article/default.php отвечающий за шаблон материала, если по указанному пути вы не нашли данный файл тогда вам стоит создать соответствующее переопределение или скопировать его из папки /components/com_content/views/article/tmpl.

Поля datePublished и dateModified

Так как я вывожу дату публикации материала не стандартными средствами Joomla 3, а использую для этих целей собственный код, то выглядит все это дело следующим образом:

<?php echo JText::sprintf(JHtml::_('date', $this->item->publish_up, JText::_('DATE_FORMAT_LC3'))); /*Выводим на страницу дату публикации в формате ДД.Месяц.ГГ*/ ?>

Все что необходимо сделать, это обернуть данный код специальным тегом, чтобы получился следующий результат:

<time datetime="<?php echo ($this->item ->publish_up); /*Показываем точную дату публикации с точностью до секунды (для микроразметки)*/?>" itemprop="datePublished">
 <?php echo JText::sprintf(JHtml::_('date', $this->item->publish_up, JText::_('DATE_FORMAT_LC3'))); /*Выводим на страницу дату публикации в формате ДД.Месяц.ГГ*/ ?>
</time>

Для микроразметки даты модификации можно поступить аналогичным образом (причем выводить саму дату на страницу не обязательно):

<time datetime="<?php echo ($this->item ->modified); /*Показываем точную дату модификации*/?>" itemprop="dateModified"></time>

Поля author и publisher

Что касается автора, можно пойти простым путем и указать одного автора для всех материалов, а можно выдергивать автора из базы данных, зная его идентификатор и выводить в нужном месте страницы. Я не стал заморачиваться и вывел автора статически, причем скрыл его с глаз при помощи стилей:

<div itemprop="author" itemscope itemtype="http://schema.org/Person" style="position: absolute;left: -9999px;">
 <span itemprop="name">Joom4all.ru</span>
</div>

Поле publisher можно дословно перевести как издатель, это можно сказать отдельный объект который относится к библиотеке «schema.org/Organization». Состав данного поля достаточно сложный, как выяснилось, издатель должен иметь адрес, телефон, имя, а так же логотип компании. Кроме того логотип относится уже к библиотеке «schema.org/ImageObject» и в качестве параметров должен содержать путь до изображения, а так же его ширину и высоту.

В моем случае я оформил поле publisher следующим образом, а для того чтобы логотип издателя не отображался на экране я скрыл его при помощи свойства display:none.

  <div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
   <div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
    <img itemprop="url image" src="/templates/joom4all/images/logo-min.png" style="display:none;"/>
    <meta itemprop="width" content="230">
    <meta itemprop="height" content="109">
   </div>
   <meta itemprop="name" content="Joom4all.ru">
   <meta itemprop="address" content="Москва">
<meta itemprop="telephone" content="+7 999 000–00–00">
</div>

Поле mainEntityOfPage

И последнее поле, которое следует поправить это поле mainEntityOfPage. Данное поле относится к библиотеке schema.org/WebPage и не является обязательным, если честно, какова его суть понять сложно. Но насколько мне удалось выяснить, суть его заключается в том, чтобы указать какая из страниц будет главной для текущего материала. Возможно, если у Вас на сайте материалы связаны друг с другом и четко прослеживается между ними связь, то данное поле будет полезно. Раз уж Гугл просит, то давайте его добавим.

У меня связи между материалами по большому счету никакой нет, поэтому в качестве значения для поля mainEntityOfPage я решил указать адрес текущей страницы. Сделал я это следующим образом:

<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="<?php $shemaURL = &JFactory::getURI(); print $shemaURL; ?>" content="<?php echo $this->escape($this->item->title); ?>"/>

После проделанной работы стоит посмотреть, что на все это скажет валидатор микроразметки. Для начала запускаем тест в Гугле, результат радует, микроразметка присутствует, ошибки отсутствуют:

Микроразметка Schema.org присутствует на сайте, ошибок нет!

Теперь запускаем тот же самый тест в Яндексе, в принципе все хорошо, но есть одно предупреждение, которое гласит что поле interactionCount не определено в спецификации https://schema.org/Article:

В валидаторе микроразметки от Яндекса имеется одно предупреждение

Поле interactionCount изначально предполагало передачу данных о количестве просмотров статьи, но с некоторых пор оно устарело и для объекта Article (статья) данное поле действительно не определено. Однако Google к нему относится вполне положительно, по крайней мере, пока.

Оставлять данный параметр или нет дело сугубо личное, я все же решил от него избавиться, для этого в коде страницы я удалил мета тег с данным параметром и оставил лишь код, отвечающий за вывод количества просмотров, лишним не будет. После очередной проверки ошибок как в Яндексе, так и в Google замечено не было.

Что еще можно обозначить в статье при помощи семантической разметки? Как вариант можно отметить количество комментариев. Для этих целей предусмотрено специальное свойство «commentCount», в качестве параметра которому необходимо передать целое число количества комментариев.

Для начала нам необходимо получить то само число количества комментариев, как его получить я говорил в одной из предыдущих статей. После этого останется лишь добавить следующий мета тег <meta itemprop="commentCount" content="<? echo $count; ?>" />. Для тех кому лениво переходить по ссылке приведу свой код вывода количества комментариев с использованием вышеупомянутого мета тега:

<? /*Начало*/ $comments = JPATH_SITE . '/components/com_jcomments/jcomments.php'; /*Выводим количество комментариев, для этого используем функционал компонента jcomments*/
  if (file_exists($comments)) {/*Проверяем наличие файла jcomments.php*/
   require_once($comments);
   $options = array(); /*Массив условий для получения списка комментариев*/
   $options['object_id'] = $this->item->id; /*Идентификатор материала, у которого будут проверяться наличие и количество комментариев*/
   $options['object_group'] = 'com_content'; /*Имя компонента, в нашем случае это контент*/
   $options['published'] = 1;
   $count = JCommentsModel::getCommentsCount($options);/*Используем статический метод с массивом условий для получения списка комментариев*/?>
   <div class="comment-hits" title="Количество комментариев"><?/*Количество Комментариев*/?>
    <span class="icon-comment" id="article-bottom" aria-hidden="true"></span>
    <meta itemprop="commentCount" content="<? echo $count; ?>" />
     <? echo $count; ?>
   </div>
<?}

Конечно, это далеко не весь возможный перечень элементов микроразметки для статьи, но этого вполне достаточно ведь в Joomla 3.8 основные элементы страниц уже размечены, а нам остается лишь подправить некоторые недочеты. На этом статья на тему микроразметки материалов в Joomla 3 подошла к концу, все интересующие Вас вопросы можете оставлять в комментариях.

Добавить комментарий